package main

/*
StructTag 拥有一些方法，可以进行 Tag 信息的解析和提取，如下所示：
func (tag StructTag) Get(key string) string：根据 Tag 中的键获取对应的值，例如`key1:"value1" key2:"value2"`的 Tag 中，可以传入“key1”获得“value1”。
func (tag StructTag) Lookup(key string) (value string, ok bool)：根据 Tag 中的键，查询值是否存在。
*/

import (
	"fmt"
	"reflect"
)

func main() {
	type cat struct {
		Name string
		Type int `json:"type" id:"100"`
	}
	typeOfCat := reflect.TypeOf(cat{})

	// 先判断字段存在与否
	if catType, ok := typeOfCat.FieldByName("Type"); ok {

		// 判断tag是否存在
		if v, ok := catType.Tag.Lookup("id"); ok {
			fmt.Println(v)
		}

		fmt.Println(catType.Tag.Get("json"))
	}
}
